package com.light.sword


fun main(args: Array<String>) {
    val S = "abcabaaaabaaacac"
    val P = "abaabcac"

    val r1 = simple(S, P)
    println(r1)
}


fun simple(s: String, p: String): Int {

    val sArr = s.toCharArray()
    val pArr = p.toCharArray()

    val sLen = sArr.size
    val pLen = pArr.size

    var i = 0 // 记录 s 的当前下标
    var j = 0 // 记录 p 的当前下标

    while (i < sLen && j < pLen) {
        if (sArr[i] == pArr[j]) { // 如果当前字符匹配成功（即S[i] == P[j]），则i++，j++, 继续匹配下一个字符
            i++
            j++
        } else { // 如果匹配失败（即S[i]! = P[j]），令i = i - j + 1，j = 0，即每次匹配失败时，i 回溯到上次开始匹配的下一个位置，j 被置为0。
            i = i - j + 1
            j = 0
        }
    }

    if (j == pLen) {
        return i - pLen // 返回本轮比较的开始位置
    }

    return -1

}


fun kmp() {

}